package com.eastfair.venueservice.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.venueservice.dto.HomeBuilderDrawingAuditDTO;
import com.eastfair.venueservice.entity.HomeBuilderDrawingAudit;
import com.eastfair.venueservice.entity.HomeBuilderDrawingCategoryAudit;
import com.eastfair.venueservice.enumeration.HomeBuilderDrawingCategoryAuditDrawingSourceEnum;
import com.eastfair.venueservice.vo.HomeBuilderDrawingAuditVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 主场搭建商图纸审核记录
 * </p>
 *
 * @author dqq
 * @date 2023-04-28
 */
public interface HomeBuilderDrawingAuditService extends SuperService<HomeBuilderDrawingAudit> {

    /**
     * 图纸分类审核ID查询图纸列表.
     *
     * @param categoryId the category id
     * @return the list
     */
    List<HomeBuilderDrawingAuditVO> listDrawingVOByCategoryId(Long categoryId);

    /**
     * 查询图纸列表.
     *
     * @param query the query
     * @return the list
     */
    List<HomeBuilderDrawingAudit> listHomeBuilderDrawingAudit(HomeBuilderDrawingAuditDTO query);

    /**
     * 报馆ID，图纸来源查询图纸列表.
     *
     * @param reportId      the report id
     * @param drawingSource the drawing source
     * @return the list
     */
    List<HomeBuilderDrawingAudit> listByReportIdAndSource(Long reportId, HomeBuilderDrawingCategoryAuditDrawingSourceEnum drawingSource);

    /**
     * 图纸分类审核ID查询图纸审核.
     *
     * @param categoryAuditIds the category audit ids
     * @return the list
     */
    List<HomeBuilderDrawingAudit> listByCategoryAuditIds(List<Long> categoryAuditIds);

    /**
     * 保存图纸.
     *
     * @param homeBuilderDrawingAuditDTO the home builder drawing audit dto
     * @return the boolean
     */
    boolean saveHomeBuilderDrawingAudit(HomeBuilderDrawingAuditDTO homeBuilderDrawingAuditDTO);

    /**
     * 批量保存图纸.
     *
     * @param list the list
     * @return the boolean
     */
    boolean saveBatch(List<HomeBuilderDrawingAuditDTO> list);

    /**
     * 批量保存图纸.
     *
     * @param list           the list
     * @param drawCategoryId the draw category id
     * @return the boolean
     */
    boolean saveBatch(List<HomeBuilderDrawingAuditDTO> list, Long drawCategoryId);

    /**
     * 报馆ID删除图纸.
     *
     * @param reportId      the report id
     * @param drawingSource the drawing source
     * @return the boolean
     */
    boolean removeByReportIdAndType(Long reportId, HomeBuilderDrawingCategoryAuditDrawingSourceEnum drawingSource);

    /**
     * 报馆ID，图纸类型ID批量删除图纸.
     *
     * @param reportId      the report id
     * @param drawingIdList the drawing id list
     * @return the boolean
     */
    boolean removeByReportIdAndDrawingId(Long reportId, List<Long> drawingIdList);
}
